package cn.com.huzo.repository.trade;

import cn.com.huzo.model.entities.trade.MasterProductionScheduleHeaderEntity;
import huzofw.repository.GenericRepository;

/**
 * 产品计划数据访问对象接口。
 *
 * @author 吴旭
 */
public interface MasterProductionScheduleHeaderRepository extends GenericRepository<MasterProductionScheduleHeaderEntity, Long> {

    /**
     * 取得新产品计划数（未下生产指示书）。
     *
     * @return 新产品计划数
     */
    Integer fetchNewMpsCount();

    /**
     * 根据给定的标识，取得产品计划。
     *
     * @param headerId 产品计划标识
     * @param currentUserId 当前用户
     * @param workFlowId 产品计划审核工作流标识
     * @return
     */
    MasterProductionScheduleHeaderEntity fetchByKey(Long headerId, Long currentUserId, Long workFlowId);

    /**
     * 设置完成标记
     *
     * @param headerId 产品计划标识
     * @param overFlag 完成标记
     * @return 影响行数
     */
    Integer setOverFlag(Long headerId, String overFlag);

    /**
     * 审核产品计划
     *
     * @param headerId 产品计划标识
     * @param workFlowId 审核流程标识
     * @param nodeOrder 审核流程步骤
     * @param checkedBy 审核人
     * @param isCheckCurrentNode 是否针对当前流程做审核
     * @return
     */
    Integer doCheck(Long headerId, Long workFlowId, Short nodeOrder, Long checkedBy, Short isCheckCurrentNode);

    /**
     * 反审产品计划
     *
     * @param headerId 产品计划标识
     * @param nodeOrder 审核流程步骤
     * @param checkedBy 审核人
     * @return
     */
    Integer doUnCheck(Long headerId, Short nodeOrder, Long checkedBy);
}
